﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace atirado
{
    class Inimigo
    {
        Vector2 posicao;
        public static Texture2D imagem;
        float velocidadeX = 2f;
        float velocidadeY = 2f;
        static Texture2D texturaSangue;
        bool morto = false;
        Random distancia = new Random();
        int tempomorto = 0;
        int Sframe;
        
        int frame = 0;

        static public void Initialize(Texture2D Inimigo, Texture2D Sangue)
        {
            imagem = Inimigo;
            texturaSangue = Sangue;
        }
        
        public Inimigo(Vector2 posicao)
        {
            this.posicao = posicao;
            
        }

        public void Update(GameTime gameTime, Vector2 posicaoplayer,int matanca) 
        {
            frame = (int)(gameTime.TotalGameTime.Milliseconds / 50) % 8;
            
            if (!morto)
            {
                posicao.Y += velocidadeY;
                posicao.X += velocidadeX;

                
                if (matanca > 10)
                {
                    Vector2 dist;
                    dist.X = posicao.X-posicaoplayer.X ;
                    dist.Y = posicao.Y - posicaoplayer.Y ;

                    double ang = Math.Atan2((double)dist.Y, (double)dist.X);

                    velocidadeX = -(float)Math.Cos(ang)*2;
                    velocidadeY = -(float)Math.Sin(ang)*2;
                }
                else
                {
                    if (posicao.Y > 480)
                    {
                        velocidadeY *= -1;
                    }

                    if (posicao.X > 800)
                    {
                        velocidadeX *= -1;
                    }
                }
            }
        }

        public Rectangle colisao()
        {
            return new Rectangle((int)posicao.X, (int)posicao.Y, imagem.Bounds.Width / 8, imagem.Bounds.Height);
        }

        public void sangue() 
        {
            morto = true;
        }

        public bool estamorto()
        {
            return morto; 
        }

        public void Draw(GameTime gameTime, SpriteBatch spriteBatch) 
        {
                
            if (!morto)
            {
                
               
                

                if (velocidadeX < 0)
                {
                    //spriteBatch.Draw(imagem, posicao, new Rectangle(106 * frame,0,106,162), Color.White, 0f, new Vector2(imagem.Bounds.Center.X, imagem.Bounds.Center.Y), 1f, SpriteEffects.None, 0.8f);
                    spriteBatch.Draw(imagem, posicao, new Rectangle(82 * frame, 0, 82, 82), Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.FlipHorizontally, .8f);
                }
                else
                {
                    spriteBatch.Draw(imagem, posicao, new Rectangle(82 * frame, 0, 82, 82), Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, .8f);
                }
            }
            else
            {
                spriteBatch.Draw(texturaSangue,posicao, new Rectangle(0, 0, texturaSangue.Bounds.Width, texturaSangue.Height), Color.White, 0f, new Vector2(texturaSangue.Bounds.Center.X, texturaSangue.Bounds.Center.Y),1f, SpriteEffects.None, 0.08f);
                tempomorto += gameTime.ElapsedGameTime.Milliseconds;
                if (tempomorto > 100) { Sframe++; }
            }
            
        }
    }
}
